#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define NUM_CARDS 52
#define NUM_TYPES 13
#define NUM_SUITS 4

// 牌的类型
const char* cardTypes[NUM_TYPES] = {
   "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
const char *suits[NUM_SUITS] = {"红桃", "黑桃", "梅花", "方片"};

// 发牌函数
void dealCards() {
    srand(time(NULL)); // 初始化随机数生成器

    int cards[NUM_CARDS];
    int i, j;
    
    // 初始化牌组
    for (i = 0; i < NUM_CARDS; i++) {
        cards[i] = i;
    }
    
    // 洗牌
    for (i = NUM_CARDS - 1; i > 0; i--) {
        j = rand() % (i + 1);
        int temp = cards[i];
        cards[i] = cards[j];
        cards[j] = temp;
    }
    
    // 发牌
    printf("发牌结果：\n");
    for (i = 0; i < NUM_CARDS; i++) {
        int type = cards[i] % NUM_TYPES;
        int	suit = cards[i] / NUM_TYPES;
        printf("Card %d: %s%s\n", i + 1,suits[suit], cardTypes[type]);
    }
}

// 主函数
int main() {
    dealCards(); // 调用发牌函数
    return 0;
}

